package XMLDemo;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

/*
    需求: 使用DOM4J解析students.xml文件,将解析到的数据封装到学生对象中，并将学生对象存储到ArrayList集合中，最后遍历集合
 */

public class XMLParseDemo {
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        //创建解析器
        SAXReader saxReader = new SAXReader();
        //获取Document对象
        Document document = saxReader.read(new FileInputStream("MyInterface\\src\\XMLDemo\\students.xml"));
        //获取根节点对象
        Element rootElement = document.getRootElement();
        //从根节点来查找其他的节点元素
        List<Element> elements = rootElement.elements("student");
        //定义存储学生对象的集合
        ArrayList<Student> studentArrayList = new ArrayList<>();
        //遍历集合得到每一个学生元素
        for(Element studentElement : elements){
            //获取属性
            Attribute attribute = studentElement.attribute("id");
            //获取id属性的值
            String id = attribute.getValue();
            //获取name元素
            Element nameElements = studentElement.element("name");
            //获取name元素对应的内容
            String name = nameElements.getText();
            //获取age元素
            Element ageElements = studentElement.element("age");
            //获取age元素对应的内容
            String age = ageElements.getText();
            //获取address元素
            Element addressElements = studentElement.element("address");
            //获取address元素对应的内容
            String address = addressElements.getText();

            //根据信息创建对象并加到学生对象集合中
            studentArrayList.add(new Student(id,name,age,address));
        }
        //遍历学生对象
        for(Student stu : studentArrayList){
            System.out.println(stu);
        }
    }
}
